home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Languages Suite
/
ProgramD2.iso
/
Borland
/
Borland Pascal with Objects 7.0
/
WHEREIS.ZIP
/
IWRITEPS.ASM
< prev
next >
Wrap
Assembly Source File
|
1992-10-27
|
3KB
|
86 lines
; FILENAME: IWRITEPS.ASM
;
; Copyright (c) 1988, 1992 by Borland International, Inc.
;
; DESCRIPTION: This module implements a routine that displays Turbo Pascal
; style strings. The module uses Ideal mode syntax.
;
; ASSEMBLY INSTRUCTIONS: To assemble this module use the following
; TASM command line.
;
; TASM /dMDL=memorymodel iwriteps
;
; 'memorymodel' in the above command line may be replaced by TINY, SMALL,
; MEDIUM, COMPACT, LARGE or HUGE. If assembling this module to run on
; a 286/386 machine, turn on the P286 directive in order to take advantage of
; 286/386 specific instructions. For example:
;
; TASM /dMDL=memorymodel /jP286 iwriteps
;
; NOTE: This module requires that main program define the identifier
; DisplayPage and initialize it.
%tabsize 4
ifndef MDL
display "Error: This module requires that you provide a memory model"
display " definition on the command line. I.E. /dMDL=SMALL."
err ; Force a fatal error
else
ideal ; Use TASM's Ideal mode
% model MDL ; Define the memory model
include "imacros.mac"
include "dos.inc"
include "idos.mac" ; Include DOS interface macros
include "ibios.mac"
include "bios.inc"
dataseg
global DisplayPage:byte ; declare extrn variable
codeseg
global WritePascalString:proc ; declare public proc
proc WritePascalString
; This routine displays a string to the screen by calling the BIOS
; service to display a character in TTY mode. It expects a far pointer
; to the string to be passed on the stack. Note that the length of the
; string is limited to 255 bytes.
;
; Input
; StrAddress - Far pointer to string to display
; Output
; none
; Calling convention
; Pascal
; Registers modified
; di, es, Flags
ARG StrAddress:dword=ParamSize ; Define parameters passed on the stack
push bp
mov bp, sp
xor cx, cx
les di, [StrAddress] ; Get the address of the string
mov cl, [byte es:di] ; Get the length of the string
inc di ; Point to the first character to display
jcxz Exit
DisplayChar: ; Display the next character
CharacterOutput <[byte es:di]>
inc di ; Point to the next character
loop DisplayChar
Exit:
pop bp
ret ParamSize ; Clean up the stack since we're using
; Pascal calling conventions
endp WritePascalString
endif ; ifndef MDL
end